/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gob.fonafe.service.impl;

import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import pe.gob.fonafe.dao.InmuebleDAO;
import pe.gob.fonafe.domain.ConsultaReclamoBean;
import pe.gob.fonafe.domain.GaleriaFotosBean;
import pe.gob.fonafe.domain.InmuebleBean;
import pe.gob.fonafe.domain.TipoInmuebleBean;
import pe.gob.fonafe.service.InmuebleService;

/**
 *
 * @author czela
 */

@Service
public class InmuebleServiceImpl implements InmuebleService{

    private static final Logger logger = Logger.getLogger(InmuebleServiceImpl.class);

    @Autowired
    private InmuebleDAO inmuebleDAO;

    public List<InmuebleBean> busqueda(String ubigeo, int tipInmueble, String tipContrato, String tipMoneda, String desde, String hasta, int id_empresa) {
        List<InmuebleBean> listResult= new ArrayList<InmuebleBean>();
        try{
            listResult = inmuebleDAO.busqueda(ubigeo, tipInmueble, tipContrato, tipMoneda, desde, hasta, id_empresa);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        logger.info("Total LIst Service[" + listResult.size() + "]");
        return listResult;
    }
    
    public List<InmuebleBean> busquedaGLC(String ubigeo, int tipInmueble, String tipContrato, String tipMoneda, String desde, String hasta, int id_empresa,String estado) {
        List<InmuebleBean> listResult= new ArrayList<InmuebleBean>();
        try{
            listResult = inmuebleDAO.busquedaGLC(ubigeo, tipInmueble, tipContrato, tipMoneda, desde, hasta, id_empresa,estado);
        }catch(Exception ex){
            ex.printStackTrace();
        }
        logger.info("Total LIst Service[" + listResult.size() + "]");
        return listResult;
    }

    public List<GaleriaFotosBean> getGaleriaFotos(String idInmueble) {
        List<GaleriaFotosBean> listGaleriaResult = new ArrayList<GaleriaFotosBean>();
        try{
            listGaleriaResult = inmuebleDAO.getGaleriaPorInmuble(idInmueble);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total List Fotos Service [" + listGaleriaResult.size() + "]");
        return  listGaleriaResult;
    }

    public String[] getOutputsReclamoConsulta(ConsultaReclamoBean consultaReclamoBean) {
        String[] outPutsConsultaReclamo = new String[2];
        try{
            outPutsConsultaReclamo = inmuebleDAO.registrarConsultaReclamo(consultaReclamoBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Outputs Service [" + outPutsConsultaReclamo.length + "]");
        return outPutsConsultaReclamo;
    }

    public String[] getOutputFileReclamoConsulta(String idConsRecl, String idInmueble, byte[] file,String nomFile,String typeFile) {
        String[] outPutsFileConsRecl = new String[2];
        try{
            outPutsFileConsRecl = inmuebleDAO.registraFilesConsultaReclamo(idConsRecl, idInmueble, file,nomFile,typeFile);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPutsFileConsRecl;
    }

    public List<TipoInmuebleBean> ListarTipoInmueble() {
        List<TipoInmuebleBean> listResult = new ArrayList<TipoInmuebleBean>();
        try{
            listResult = inmuebleDAO.ListarTipoInmueble();
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total List Fotos Service [" + listResult.size() + "]");
        return  listResult;
    }

    public String[] actualizarDetInmuebleGLC(InmuebleBean inmuebleBean) {
        String[] outPutsFileConsRecl = new String[2];
        try{
            outPutsFileConsRecl = inmuebleDAO.actualizarDetInmuebleGLC(inmuebleBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPutsFileConsRecl;
    }

    public String[] EliminarGalInmueble(String idsGaleriaInm) {
        String[] outPutsFileConsRecl = new String[2];
        try{
            outPutsFileConsRecl = inmuebleDAO.EliminarGalInmueble(idsGaleriaInm);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPutsFileConsRecl;
    }

    public String[] getOutputFileInmueble(String idInmueble, byte[] fileToArrayBytes) {
       String[] outPutsConsultaReclamo = new String[2];
        try{
            outPutsConsultaReclamo = inmuebleDAO.registrarGaleriaInmueble(idInmueble, fileToArrayBytes);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Outputs Service [" + outPutsConsultaReclamo.length + "]");
        return outPutsConsultaReclamo;
    }

    public String[] guardarInmuebleGLC(InmuebleBean inmuebleBean) {
        String[] outPutsConsultaReclamo = new String[2];
        try{
            outPutsConsultaReclamo = inmuebleDAO.guardarInmuebleGLC(inmuebleBean);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        logger.info("Total Outputs Service [" + outPutsConsultaReclamo.length + "]");
        return outPutsConsultaReclamo;
    }

    public String[] eliminarInmuebleGLC(String idInmueble) {
         String[] outPuts = new String[2];
        try{
            outPuts = inmuebleDAO.eliminarInmuebleGLC(idInmueble);
        }catch(Exception ex){
            ex.printStackTrace();
            logger.error(ex);
        }
        return outPuts;
    }

    public List<InmuebleBean> ObtenerTopInmueble() {
         List<InmuebleBean> listResult= new ArrayList<InmuebleBean>();
        try{
            listResult = inmuebleDAO.ObtenerTopInmueble();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        logger.info("Total LIst Service[" + listResult.size() + "]");
        return listResult;
    }


}
